package br.usp.ime.ingpos.testes.modelo;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

import br.usp.ime.ingpos.modelo.Orientador;
import br.usp.ime.ingpos.modelo.Perfil;
import br.usp.ime.ingpos.modelo.TipoPerfil;
import br.usp.ime.ingpos.modelo.dao.AreaDePesquisaDAO;
import br.usp.ime.ingpos.modelo.dao.OrientadorDAO;
import br.usp.ime.ingpos.modelo.dao.PerfilDao;
import br.usp.ime.ingpos.services.OrientadorService;
import br.usp.ime.ingpos.testes.BancoDeDadosTestCase;

public class OrientadorTeste
    extends
        BancoDeDadosTestCase
{
    public OrientadorTeste(
        String name )
    {
        super( name );
    }

    @Test
    public void testCriarOuAtualizarOrientador()
    {
        final OrientadorService orientadorService = new OrientadorService(
        		new OrientadorDAO( getSessionCreator() ),
        		new AreaDePesquisaDAO( getSessionCreator() ),
        		new PerfilDao( getSessionCreator() ) );

        List<String> nomes = new ArrayList<String>();
        nomes.add( "Alair Pereira do Lago" );
        nomes.add( "Alan Mitchell Durham" );
        nomes.add( "Alfredo Goldman Vel Lejbman" );
        nomes.add( "Ana Cristina Vieira de Melo" );
        nomes.add( "Antonio Elias Fabris" );
        nomes.add( "Arnaldo Mandel" );
        nomes.add( "Carlos Eduardo Ferreira" );
        nomes.add( "Carlos Hitoshi Morimoto" );
        nomes.add( "Carlos Humes Junior" );
        nomes.add( "Cristina Gomes Fernandes" );
        nomes.add( "Daniel Macedo Batista" );
        nomes.add( "Ernesto Julian Goldberg Birgin" );
        nomes.add( "Fabio Kon" );
        nomes.add( "Flavio Soares Correa da Silva" );
        nomes.add( "Francisco Carlos da Rocha Reverbel" );
        nomes.add( "João Eduardo Ferreira" );
        nomes.add( "Jose Augusto Ramos Soares" );
        nomes.add( "Julio Michael Stern" );
        nomes.add( "Junior Barrera" );
        nomes.add( "Leliane Nunes de Barros" );
        nomes.add( "Leonidas de Oliveira Brandao" );
        nomes.add( "Marcel Parolin Jackowski" );
        nomes.add( "Marcelo Finger" );
        nomes.add( "Marcelo Gomes de Queiroz" );
        nomes.add( "Marco Aurélio Gerosa" );
        nomes.add( "Marco Dimas Gubitoso" );
        nomes.add( "Nami Kobayashi" );
        nomes.add( "Nina Sumiko Tomita Hirata" );
        nomes.add( "Paulo Feofiloff" );
        nomes.add( "Paulo José da Silva e Silva" );
        nomes.add( "Renata Wassermann" );
        nomes.add( "Roberto Hirata Junior" );
        nomes.add( "Roberto Marcondes Cesar Junior" );
        nomes.add( "Ronaldo Fumio Hashimoto" );
        nomes.add( "Routo Terada" );
        nomes.add( "Siang Wun Song" );
        nomes.add( "Valdemar Waingort Setzer" );
        nomes.add( "Walter Figueiredo Mascarenhas" );
        nomes.add( "Yoshiharu Kohayakawa" );
        nomes.add( "Yoshiko Wakabayashi" );

        for( String nome : nomes ) {
            if( orientadorService.procuraOrientadorPorNome( nome ) == null ) {
            	Orientador o = new Orientador( nome );
            	o.setEmail(nome);
            	o.setHash(nome);
                orientadorService.salvar( o );
            }
        }

        List<Orientador> orientadores = orientadorService.procurarTodosOrientadores();
        List<String> nomesEncontrados = new ArrayList<String>();
        for (Orientador o : orientadores) {
        	nomesEncontrados.add(o.getDadosPessoais().getNomeCompleto());
        }
        for( int i = 0; i < nomes.size(); i++ )
            assertTrue(nomesEncontrados.contains(nomes.get( i )));
    }
}
